home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / text_utl / vuestr / viewer.frm < prev    next >
Text File  |  1995-05-22  |  10KB  |  416 lines

  1. VERSION 2.00
  2. Begin Form Viewer 
  3.    BackColor       =   &H00C0C0C0&
  4.    Caption         =   "VBstrAPI Huge Array Viewer Demo"
  5.    ClientHeight    =   3615
  6.    ClientLeft      =   540
  7.    ClientTop       =   2175
  8.    ClientWidth     =   7575
  9.    Height          =   4305
  10.    Left            =   480
  11.    LinkTopic       =   "Form1"
  12.    ScaleHeight     =   3615
  13.    ScaleWidth      =   7575
  14.    Top             =   1545
  15.    Width           =   7695
  16.    Begin PictureBox InfoBar 
  17.       Align           =   1  'Align Top
  18.       BackColor       =   &H00C0C0C0&
  19.       Height          =   330
  20.       Left            =   0
  21.       ScaleHeight     =   300
  22.       ScaleWidth      =   7545
  23.       TabIndex        =   1
  24.       Top             =   0
  25.       Width           =   7575
  26.       Begin Label Status 
  27.          BackStyle       =   0  'Transparent
  28.          FontBold        =   -1  'True
  29.          FontItalic      =   0   'False
  30.          FontName        =   "Arial"
  31.          FontSize        =   8.25
  32.          FontStrikethru  =   0   'False
  33.          FontUnderline   =   0   'False
  34.          ForeColor       =   &H00800000&
  35.          Height          =   270
  36.          Left            =   120
  37.          TabIndex        =   2
  38.          Top             =   45
  39.          Width           =   3195
  40.       End
  41.    End
  42.    Begin CommonDialog CMDialog1 
  43.       Left            =   60
  44.       Top             =   2025
  45.    End
  46.    Begin TextBox MainView 
  47.       BackColor       =   &H00C0C0C0&
  48.       FontBold        =   0   'False
  49.       FontItalic      =   0   'False
  50.       FontName        =   "Courier New"
  51.       FontSize        =   9.75
  52.       FontStrikethru  =   0   'False
  53.       FontUnderline   =   0   'False
  54.       Height          =   2565
  55.       Left            =   570
  56.       MultiLine       =   -1  'True
  57.       ScrollBars      =   3  'Both
  58.       TabIndex        =   0
  59.       TabStop         =   0   'False
  60.       Tag             =   "OL"
  61.       Top             =   570
  62.       Width           =   4935
  63.    End
  64.    Begin Menu mnuFile 
  65.       Caption         =   "&File"
  66.       Begin Menu mnuFileOpen 
  67.          Caption         =   "&Open"
  68.       End
  69.       Begin Menu mnuFileExit 
  70.          Caption         =   "&Exit"
  71.       End
  72.    End
  73.    Begin Menu mnuFirst 
  74.       Caption         =   "&First Page"
  75.    End
  76.    Begin Menu mnuPrev 
  77.       Caption         =   "&Prev Page"
  78.    End
  79.    Begin Menu mnuNext 
  80.       Caption         =   "&Next Page"
  81.    End
  82.    Begin Menu mnuLast 
  83.       Caption         =   "&Last Page"
  84.    End
  85.    Begin Menu mnuAbout 
  86.       Caption         =   "&About"
  87.    End
  88. End
  89. Option Explicit
  90.  
  91. Const BUFFER_SIZE = 32768
  92.  
  93. Dim SHandle     As Long     ' ArrayStr Handle
  94. Dim SPages      As Integer  ' String Pages Used
  95. Dim CHandle     As Long     ' CatStr Handle
  96. Dim CurrentPage As Integer  ' Currently displayed page
  97.  
  98. Sub About ()
  99.  
  100.     MsgBox "This program demonstrates a method of viewing large text files.  This demo does not attempt to demonstrate editing techniques.  That will be covered in another demo." + Chr$(10) + "" + Chr$(10) + "VBstrAPI.DLL Copyright " & Chr(169) & " 1995, Greg Truesdell", 64, "VBstrAPI Viewer Demonstration"
  101.  
  102. End Sub
  103.  
  104. Sub Form_Activate ()
  105.  
  106.     About
  107.  
  108. End Sub
  109.  
  110. Sub Form_Load ()
  111.  
  112.     SHandle = -1
  113.     CHandle = CreateNewCatString(BUFFER_SIZE)
  114.  
  115.     If CHandle = -1 Then
  116.  
  117.     MsgBox "The program was unable to create a CatStr Object." + Chr$(10) + "This usually means there is not enough memory.", 16, "Unable to Continue"
  118.     Unload Me
  119.  
  120.     End If
  121.  
  122.     ' setting page to zero resets the menu
  123.  
  124.     SetCurrentPage 0
  125.  
  126.     Me.Width = screen.Width * .8
  127.     Me.Left = screen.Width * .1
  128.     Me.Top = screen.Height * .1
  129.     Me.Height = screen.Height * .8
  130.  
  131.  
  132. End Sub
  133.  
  134. Sub Form_Paint ()
  135.  
  136.     Outlines Me
  137.  
  138. End Sub
  139.  
  140. Sub Form_Resize ()
  141.  
  142.     On Error Resume Next
  143.  
  144.     MainView.Left = 120
  145.     MainView.Top = InfoBar.Height + 120
  146.     MainView.Width = ScaleWidth - 240
  147.     MainView.Height = ScaleHeight - 240 - InfoBar.Height
  148.  
  149.     On Error GoTo 0
  150.  
  151. End Sub
  152.  
  153. Sub Form_Unload (Cancel As Integer)
  154.  
  155.     If CHandle > -1 Then DestroyCatString CHandle
  156.     If SHandle > -1 Then DestroyStringArray SHandle
  157.  
  158. End Sub
  159.  
  160. Sub mnuAbout_Click ()
  161.  
  162.     About
  163.  
  164. End Sub
  165.  
  166. Sub mnuFileExit_Click ()
  167.  
  168.     Unload Me
  169.  
  170. End Sub
  171.  
  172. '=============================================================
  173. '=  Created:    05/20/95 at 09:59 AM
  174. '=  Project:    VIEWSTR.MAK
  175. '=  Author:     Greg Truesdell
  176. '=============================================================
  177. '=
  178. '=  Purpose:    Open and Read a File into a ArrayStr Array.
  179. '=
  180. '=  Parameters: None.
  181. '=
  182. '=  Returns:    ArrayStr associated with the global SHandle
  183. '=              variable is loaded with the contents of the
  184. '=              the file.  The global SPages variable is
  185. '=              updated with the count of ArrayStr elements
  186. '=              containing text.
  187. '=
  188. '=============================================================
  189. '
  190. Sub mnuFileOpen_Click ()
  191.  
  192.   Dim CFilename As String   ' the file to open
  193.   Dim File      As Integer  ' the file handle
  194.   Dim FLen      As Long     ' the file length
  195.   Dim PageGuess As Integer  ' best guess at size of array
  196.   Dim Text      As String   ' a line of text
  197.   Dim rc        As Integer  ' generic return code
  198.  
  199.     On Error GoTo OpenCancel
  200.     
  201.     CMDialog1.DialogTitle = "Open Text File for Viewing"
  202.     CMDialog1.Filename = ""
  203.     CMDialog1.InitDir = ""
  204.     CMDialog1.Filter = "All Files (*.*)|*.*|"
  205.     CMDialog1.FilterIndex = 1
  206.     CMDialog1.MaxFileSize = 256
  207.     CMDialog1.DefaultExt = "*.*"
  208.     CMDialog1.HelpFile = ""
  209.     CMDialog1.HelpCommand = &H1
  210.     CMDialog1.HelpContext = 0
  211.     CMDialog1.CancelError = True
  212.     CMDialog1.Flags = 22540
  213.     CMDialog1.Action = 1
  214.  
  215.     On Error GoTo OpenError
  216.     
  217.     CFilename = CMDialog1.Filename
  218.     FLen = FileLen(CFilename)
  219.  
  220.     ' ignore empty files
  221.     
  222.     If FLen = 0 Then
  223.  
  224.     MsgBox "The file '" & CFilename & "' is empty.", 64, "File Empty"
  225.     GoTo OpenExit
  226.  
  227.     End If
  228.  
  229.     ' now, open the file
  230.     
  231.     File = FreeFile
  232.     Open CFilename For Input As #File
  233.     
  234.     On Error GoTo ReadError
  235.  
  236.     ' start with a new string array
  237.     
  238.     If SHandle > -1 Then DestroyStringArray SHandle
  239.  
  240.     ' estimate the size of array required, then add 1 more element
  241.     
  242.     PageGuess = (FLen / BUFFER_SIZE) + 1
  243.     PageGuess = PageGuess + 1
  244.  
  245.     ' create the array, exit on error
  246.     
  247.     SHandle = CreateNewStringArray(PageGuess, BUFFER_SIZE)
  248.     If SHandle = -1 Then
  249.  
  250.     MsgBox "Unable to allocate an ArrayStr large enough to contain the file.", 16, "ArrayStr Creation Error"
  251.     GoTo OpenExit
  252.  
  253.     End If
  254.  
  255.     ' read the file
  256.     ' this method of reading files is slow, but we need to do
  257.     ' it this way for files larger than one array element
  258.  
  259.     SPages = 0
  260.     CatStrClear CHandle
  261.  
  262.     Me.MousePointer = 11
  263.     Do While Not EOF(File)
  264.  
  265.     Line Input #File, Text
  266.  
  267.     rc = CatStrAddLine(CHandle, Text)
  268.  
  269.     If rc = -1 Then ' CatStr is full.
  270.  
  271.         rc = PutArrayStr(SHandle, SPages, CatStrCopy(CHandle))
  272.         CatStrClear CHandle
  273.         SPages = SPages + 1
  274.  
  275.     End If
  276.     
  277.     Loop
  278.     
  279.     ' don't forget to pickup the last bit.
  280.  
  281.     If CatStrLength(CHandle) > 0 Then
  282.  
  283.     rc = PutArrayStr(SHandle, SPages, CatStrCopy(CHandle))
  284.     CatStrClear CHandle
  285.     SPages = SPages + 1
  286.     
  287.     End If
  288.  
  289.     ' done
  290.  
  291.     Close File
  292.     Me.MousePointer = 0
  293.  
  294.     MsgBox "Filename:" + Chr(9) + CFilename + Chr$(10) + "File Size:" + Chr$(9) & FLen & Chr$(10) + "Array Pages:" + Chr$(9) & SPages & Chr$(10) + "Created Pages:" + Chr$(9) & PageGuess, 64, "Text File Loaded"
  295.  
  296.     ' call the procedure that displays pages and
  297.     ' sets menu options
  298.     '
  299.     ' note: pages are numbered 1 to SPages
  300.  
  301.     SetCurrentPage 1
  302.  
  303.     GoTo OpenExit
  304.  
  305. ' ================================================================
  306. ReadError:
  307.  
  308.     MsgBox "Unable to Read file '" & CFilename & "'." + Chr$(10) + Error$, 16, "File Open Error"
  309.     Close File
  310.     Resume OpenExit
  311.  
  312. ' ================================================================
  313. OpenError:
  314.  
  315.     MsgBox "Unable to Open file '" & CFilename & "'." + Chr$(10) + Error$, 16, "File Open Error"
  316.     Resume OpenExit
  317.  
  318. ' ================================================================
  319. OpenCancel:
  320.  
  321.     Resume OpenExit
  322.  
  323. ' ================================================================
  324. OpenExit:
  325.  
  326.     On Error GoTo 0
  327.  
  328. End Sub
  329.  
  330. Sub mnuFirst_Click ()
  331.  
  332.     SetCurrentPage 1
  333.  
  334. End Sub
  335.  
  336. Sub mnuLast_Click ()
  337.  
  338.     SetCurrentPage SPages
  339.  
  340. End Sub
  341.  
  342. Sub mnuNext_Click ()
  343.  
  344.     SetCurrentPage CurrentPage + 1
  345.  
  346. End Sub
  347.  
  348. Sub mnuPrev_Click ()
  349.  
  350.     SetCurrentPage CurrentPage - 1
  351.  
  352. End Sub
  353.  
  354. '
  355. '=============================================================
  356. '=  Created:    05/20/95 at 11:04 AM
  357. '=  Project:    VIEWSTR.MAK
  358. '=  Author:     Greg Truesdell
  359. '=============================================================
  360. '=
  361. '=  Purpose:    Set the MainView.Text to current ArrayStr
  362. '=              page of text.
  363. '=
  364. '=              Enable/Disable appropriate menu options.
  365. '=
  366. '=  Parameters: Unary-based page number (1 to SPages)
  367. '=              Page 0 is used to reset the menu
  368. '=
  369. '=  Returns:    N/A
  370. '=
  371. '=============================================================
  372. '
  373. Sub SetCurrentPage (page As Integer)
  374.     
  375.     CurrentPage = page
  376.  
  377.     Select Case page
  378.     
  379.     Case Is < 1
  380.  
  381.         Status.Caption = ""
  382.         mnuFirst.Enabled = False
  383.         mnuNext.Enabled = False
  384.         mnuPrev.Enabled = False
  385.         mnuLast.Enabled = False
  386.         Exit Sub
  387.     
  388.     Case 1
  389.  
  390.         mnuFirst.Enabled = False
  391.         mnuNext.Enabled = (SPages > 1)
  392.         mnuPrev.Enabled = False
  393.         mnuLast.Enabled = (SPages > 1)
  394.  
  395.     Case SPages
  396.  
  397.         mnuFirst.Enabled = (SPages > 1)
  398.         mnuNext.Enabled = False
  399.         mnuPrev.Enabled = (SPages > 1)
  400.         mnuLast.Enabled = False
  401.     
  402.     Case Else
  403.     
  404.         mnuFirst.Enabled = (SPages > 1)
  405.         mnuNext.Enabled = (page < SPages)
  406.         mnuPrev.Enabled = (SPages > page)
  407.         mnuLast.Enabled = True
  408.     
  409.     End Select
  410.  
  411.     MainView.Text = GetArrayStr(SHandle, page - 1)
  412.     Status.Caption = "Page " & page & " of " & SPages
  413.  
  414. End Sub
  415.  
  416.